import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;

public class Example {

    // 定义一个方法，第一个参数是对象，第二个参数是函数式接口
    public static  <T, R> R invokeGetMethod(T obj, Function<T, R> getter) {
        // 调用对象的get方法，并返回其值
        return getter.apply(obj);
    }

    public static void main(String[] args) {
        // 示例对象
        Person person = new Person("John", 30);
        List<Person> list  = new ArrayList<>();
//        list.stream().map(person::getName).toList();

        // 使用方法引用调用get方法
        String name = invokeGetMethod(person, Person::getName);
        int age = invokeGetMethod(person, Person::getAge);

        // 输出结果
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}